/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package main;

/**
 *
 * @author eneko
 */

//Imports para que el Almacen actúe como cliente RMI.
import aso.upna.cancion.CancionRemota;
import aso.upna.playlist.GenericIterator;
import aso.upna.playlist.GenericList;
import java.net.MalformedURLException;
import java.rmi.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import aso.upna.rmi.*;
import java.io.Serializable;
import javax.naming.NamingException;
//import System.Runtime.Remoting.RemotingException;
import java.lang.System.*;
import java.util.Vector;


public class AlmacenSinProcesar implements Serializable{

    private String filename;

    public AlmacenSinProcesar(String filename){
        this.filename=filename;
    }

    public String getFilename(){
        return filename;
    }


    /*
     * El almacén de datos sin procesar es el que es cliente
     * de la clase que suministra los metadatos.
     */
    public void execRemote(int port)throws NamingException{
        GenericList canciones=new GenericList();
        Vector v=new Vector(10);
        GenericIterator canciones_it = new GenericIterator(v);
        GenericList usuarios = new GenericList();
        CancionRemota actual=null;
        //ProcessFile pf=new ProcessFile(getFilename());
        try {
            GetCancionesInterface gc = (GetCancionesInterface) Naming.lookup("rmi://localhost:"+port+"/sin_proc");
            //gc=(GetCanciones)new GetCanciones("/media/TRANS-IT/UPNA09-10/C2/ASO/Asotify-server/shared/");
            canciones=gc.getCancionesFrom("javi3");//El parámetro es el usuario del que queremos coger
                                                    //las canciones.

            for(int i=0;i<canciones.getCountElements();i++)
            {
                actual=(CancionRemota)canciones.getElementAt(i);
                System.out.println("Canción compartida nº "+i);
                System.out.println("Path Real : "+actual.getRealPath());
                System.out.println("Duración : "+actual.getDuracion());
                System.out.println("Tamaño :"+actual.getFilesize());
                System.out.println();
            }
            //usuarios=gc.loggedUsers();
            GenericIterator it=canciones.getIterator();
            System.out.println(canciones.getCountElements());
            System.out.println(canciones);
            System.out.println("DATOS RECIBIDOS!");
            //Veamos qué hemos recibido.

            /*while(it.hasNext()){
                System.out.println(it.current());
            }*/

            
        } catch (NotBoundException ex) {
            Logger.getLogger(AlmacenSinProcesar.class.getName()).log(Level.SEVERE, null, ex);
        } catch (MalformedURLException ex) {
            Logger.getLogger(AlmacenSinProcesar.class.getName()).log(Level.SEVERE, null, ex);
        } catch (RemoteException ex) {
            Logger.getLogger(AlmacenSinProcesar.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }

    public static void main(String s[]) throws NamingException{
        AlmacenSinProcesar alsp=new AlmacenSinProcesar("usuarios.txt");
        alsp.execRemote(1084);
    }
}
